5 Utilisation avancée > 5.1 Images disques – options avancées


5.1 Images disques – options avancées

QEmu simule deux contrôleurs IDE, et peut donc utiliser jusqu'à quatre disques durs virtuels (trois si le lecteur de CD est utilisé).

qemu-img est l'outil dédié à la création d'images de disques. Il permet de créer le fichier qui servira de disque dur à la machine virtuelle.

Voici toutes les options possibles pour qemu-img.

C:\QEMU>qemu-img
qemu-img version 0.8.2, Copyright (c) 2004-2006 Fabrice Bellard
usage: qemu-img command [command options]
QEMU disk image utility

Command syntax:
  create [-e] [-b base_image] [-f fmt] filename [size]
  commit [-f fmt] filename
  convert [-c] [-e] [-f fmt] filename [-O output_fmt] output_filename
  info [-f fmt] filename

Command parameters:
  'filename' is a disk image filename
  'base_image' is the read-only disk image which is used as base for a copy on
    write image; the copy on write image only stores the modified data
  'fmt' is the disk image format. It is guessed automatically in most cases
  'size' is the disk image size in kilobytes. Optional suffixes 'M' (megabyte)
    and 'G' (gigabyte) are supported
  'output_filename' is the destination disk image filename
  'output_fmt' is the destination format
  '-c' indicates that target image must be compressed (qcow format only)
  '-e' indicates that the target image must be encrypted (qcow format only)

Supported format: qcow2 vvfat vpc bochs dmg cloop vmdk qcow host_device raw



qemu-img comprend quatre commandes.

C:\QEMU>qemu-img create -f qcow2 IMAGES\Floppy.img 1440



5.1.1 Les différents formats d'images

5.1.1.1 Le format raw

Ce format permet de créer une image de 2 Go maximum (jusqu'à la version 0.8.1 de qemu-img). Le fichier d'une image raw consomme immédiatement de la place sur le disque dur de l'hôte. Autrement dit, une image d'1 Go, par exemple, mobilisera 1 Go sur le disque dur, même si le système cible n'en utilise que 200 Mo...

Ce format a l'avantage d'être compatible avec d'autres émulateurs.

Exemple :

C:\QEMU>qemu-img create -f raw IMAGES\DisqueRAW.img 100M

crée une image de type raw de 100 Mo

Remarque : la version 0.8.2 fait disparaître la limite des 2 Go.

5.1.1.2 Le format qcow2

Qcow2, qui a fait son apparition avec la version 0.8.3, est de loin le format le plus intéressant. C'est le format que nous avons déjà rencontré lors du démarrage rapide. Il a l'avantage de n'utiliser que l'espace réellement nécessaire. Une image de 10 Go, par exemple, ne pèse que quelques Ko lors de sa création. Cette image va grandir au fur et à mesure que le SE cible écrit ses fichiers. En fin d'installation, une image Windows 2000, par exemple, fait environ 700 à 800 Mo. Mais les 9 Go restants pourront être utilisés par la suite.

Ce format permet également de comprimer et de crypter une image. Le support des instantanés multiples est pris en charge à partir de ce format (paragraphe 5.3.7, page 32).

Exemple :

C:\QEMU>qemu-img create -f qcow2 IMAGES\DisqueCOW.img 10G

crée une image de type qcow2 de 10 Go.

Remarque : le format précédent, qcow, est conservé pour des raisons de compatibilité.

5.1.1.3 Les autres formats

QEmu sait créer et utiliser d'autres formats d'images. Ceux-ci sont utiles surtout lorsqu'on travaille simultanément avec d'autres émulateurs.

5.1.2 Les images de base

Nous avons déjà vu que le format cow présente des avantages d'un point de vue occupation de l'espace disque. Voyons maintenant une autre caractéristique très intéressante de ce format.

Avec l'option -b, qemu-img permet de créer une image basée sur une autre image existante.

Imaginons que nous venons d'installer Windows 2000 dans une image nommée DD_W2K.IMG. Maintenant que cette image est paramétrée comme il faut, tous les éléments utiles ont été installés et configurés dans le SE cible, nous aimerions utiliser cette images pour toute une série de tests. Et après chaque test, nous voulons repartir d'une image propre. Eh bien, le format qcow permet de faire ce genre de manipulation très facilement, et réinitialiser l'image ne prend pas plus de temps qu'il n'en faut pour taper une ligne de commande qemu-img.

COW signifie Copy On Write, c'est à dire Copie lors de l'écriture. Autrement dit, QEmu peut lire dans une image, tout en écrivant dans une autre. Mais ces deux images sont vues comme ne faisant qu'une seule. C'est ici qu'intervient l'image de base, option -b de qemu-img.

Pour la démonstration, nous allons renommer notre image Windows 2000 toute neuve en DD_W2K_BASE.IMG.

Ensuite, créons une nouvelle image avec la commande create, comme suit :

C:\QEMU>qemu-img create -b IMAGES\DD_W2K_BASE.IMG -f qcow2 IMAGES\DD_W2K.IMG
Formating 'images\dd_w2k.img', fmt=qcow, backing_file=images\dd_w2k_base.img, size=nnnnnnn kB

Nous avons maintenant une nouvelle image (que nous appellerons image différentielle, puisqu'elle ne contient que les différences par rapport à l'image de base), de quelques Ko en taille réelle, mais dont la taille virtuelle est identique à celle de l'image de base.

Lorsque nous lancerons QEmu :

C:\QEMU>qemu -hda IMAGES\dd_w2k.img -m 192 -localtime -L BIOS

celui-ci ira lire dans l'image IMAGES\dd_w2k_base.img, MAIS, toutes les écritures seront faites dans IMAGES\dd_w2k.img. L'image de base reste inchangée. Un secteur non modifié est lu à partir de l'image de base, un secteur modifié (récrit) est lu à partir de l'image différentielle.

Ainsi, pour retrouver notre Windows de départ, après un test, il suffit de recréer l'image différentielle dd_w2k.img, par la même ligne de commande que précédemment.



De plus, plusieurs images différentielles peuvent utiliser la même image de base, puisque celle-ci est en lecture seule.

Remarques :

5.1.3 Autres commandes

La commande info permet d'afficher des renseignements sur l'image disque.

C:\QEMU>qemu-img info IMAGES\dd_w2k.img
image: dd_w2k.img
file format: qcow2
virtual size: 5.0G (5368709120 bytes)
disk size: 482M
cluster_size: 4096
Snapshot list:
ID TAG VM SIZE DATE VM CLOCK
1 SAVE1 45M aaaa-mm-jj hh:mm:ss hh:mm:ss.mmm
2 SAVE2 45M aaaa-mm-jj hh:mm:ss hh:mm:ss.mmm



La commande convert permet de passer d'un format d'image à un autre. Lors de la conversion, seuls les secteurs utilisés sont récrits, permettant par la même occasion de réduire la taille du fichier image. Il est bien sûr possible d'avoir des formats source et destination identiques.

Exemple :

C:\QEMU>qemu-img convert -f qcow2 IMAGES\dd_w2k.img -O qcow2 IMAGES\dd_w2k_new.img

Cette commande copie une image disque en en retirant les secteurs inutilisés.

Remarque : à l'usage, il semble que la syntaxe exacte de la commande convert est :

qemu-img convert -O <format> <ancienne image> <nouvelle image>